草庐IT

C++ sizeof 包装类

全部标签

iostream 的 C++ 包装器类,使用流修饰符,如 std::endl 和 operator<<

这个问题在这里已经有了答案:std::endlisofunknowntypewhenoverloadingoperator(6个答案)关闭9年前。我目前正在为std::stringstream编写包装器我想转发所有operator通过我的类(class)调用std::stringstream.这现在工作得很好(感谢这个问题:wrapperclassforSTLstream:forwardoperator),但它仍然存在一个问题。假设我有以下代码:classStreamWrapper{private:std::stringstreambuffer;public:templatevoidw

c++ - placement new 基于模板 sizeof()

这在C++11中合法吗?使用最新的英特尔编译器编译并且似乎可以工作,但我只是觉得它是侥幸。classcbase{virtualvoidcall();};templateclassfunctor:publiccbase{public:functor(T*obj,void(T::*pfunc)()):_obj(obj),_pfunc(pfunc){}virtualvoidcall(){(_obj)(*_pfunc)();}private:T&_obj;void(T::*_pfunc)();//edited:thisisnogood://conststaticintsize=sizeof(_

c++ - 如何包装模板函数以处理 const 和非常量数据

我想创建一个模板化函数,它对const和非常量数据的工作方式相同,只是它会根据需要返回一个const或非常量指针。例如,我想返回一个指向容器中匹配元素的指针:templatetypenameContainer::value_type*getValuePtrIf(Container&c,Predpred){autoit=std::find_if(c.begin(),c.end(),pred);return(it!=c.end())?&(*it):nullptr;}但是我无法为const和非常量调用构建它。如果我从Container&c声明中省略const,那么它不能返回一个const指针

c++ - 为 C 库创建 Haxe hxcpp 包装器

这几天我试着写一个Haxelinenoise的hxcpp包装器这是用C代码编写的;该库非常简单,header还包含一个外部C。我正在关注snowkitlincmacrotemplate但我找不到编译C模块的方法,而且它与项目的其余部分链接,我不确定如何继续。我可以毫无问题地将代码编译为C对象并将其与我系统(OSXelCapitan)中的C可执行文件链接,所以我假设我在我的haxe项目中做错了什么,也许我无法真正链接hxcpp和C库,直接使用haxe的构建过程,或者我应该通过手动编写命令来手动传输它。@:keep@:structAccess@:include('linenoise.h')

c++ - 当仿函数不是一个选项时,我如何在 C++ 中编写带有自定义函数调用的模板化 RAII 包装器?

我目前正在使用标准¹C++17为OpenGl开发RAII系统,同时大量使用模板。现在,我正在处理的系统部分是通过一个通用模板绑定(bind)和取消绑定(bind)各种OpenGl对象,然后使用声明为每种类型创建简单的别名。以下是我的头文件的相关摘录,演示了一般技术:templateclassRaiiGlBinding{public:explicitRaiiGlBinding(constT&t,Args...args):m_unbindArgs(std::make_tuple(t,args...)){bind(t,args...);}~RaiiGlBinding(){if(m_isDes

c++ - 连续内存、OpenGL,以及如何包装顶点?

因此,OpenGL编程的一个关键要求是以保证连续内存的方式存储顶点。我最近读了几本专业图形程序员写的不错的书,他们都使用了相同想法的变体:将顶点打包成一个structof3floats,x,y,z,然后将多个顶点打包到这些structs的c风格数组或std::vector中。并且有效。但是我在这个站点上看到它一次又一次地说struct不能保证内存连续性。有人说,如果您的结构包含所有float,那么它们可能是连续的,但不能保证。数组和std::vector确实保证了这一点,但如果您放入数组或vector中的内容不连续,那将无关紧要。对于生产代码,我希望“可能”不会削减它。因此,尽管这两本

C++17:使用通用可变参数 lambda 包装可调用对象

我想将任何类型的可调用对象(例如lambda)透明地包装在另一个可调用对象中以注入(inject)额外的功能。包装器的类型应具有与原始可调用对象相同的特征:相同的参数类型相同的返回类型完美转发传递的参数在SFINAE结构中使用相同的行为我尝试使用通用可变参数lambda作为包装器:#include#includetemplateautowrap(TCallable&&callable){return[callable=std::forward(callable)](auto&&...args)->std::invoke_result_t{std::cout(args)...);};}i

c++ - 查找 sizeof char 数组 C++

我试图在另一个初始化它的函数中获取sizeofchar数组变量,但是无法获取正确的sizeof。请看下面的代码intfoo(uint8*buffer){cout输出是:sizeof:4sizeofafterfoo():13期望的输出是:sizeof:13sizeofafterfoo():13 最佳答案 单靠指针是做不到的。指针不包含有关数组大小的信息——它们只是一个内存地址。因为数组在传递给函数时会衰减为指针,所以您会损失数组的大小。然而,一种方法是使用模板:templatesize_tfoo(constT(&buffer)[N])

c++ - 使用值包装器和 operator() 重载来简化 getter/setter 设计 : a dangerous practice?

考虑以下类:classMyClass1{public:doublex()const{return_x;}//getterdoubley()const{return_y;}//getterdoublez()const{return_x*_y;}//gettervoidx(constdoublevar){_x=var;}//settervoidy(constdoublevar){_y=var;}//settervoidz(constdoublevar){_x=var;_y=1;}//setterprotected:double_x;double_y;};由于MyClass1的实际内容是一个

ios - 将 Facebook iOS SSO 用于包装的 Web 应用程序?

我正在构建一个iPad优化的html5网络应用程序,我将把它包装(并分发)在一个本地应用程序容器中。对于某些社交功能,我想使用FacebookSSO,并且想知道我是否可以使用FacebookiOSSDK的SSO并将访问token“转发”(并使用)到我的网络应用程序。如果可能,我如何触发从网站注销? 最佳答案 您可以使用FacebookSSO获取访问token并将token转发到应用的任何其他部分。他们的API不会区分来自native设备和任何其他客户端的调用之间的区别。我们已经在SocializeSDK(http://www.get